【速報】Amazon Redshift Federated QueryでRDS MySQLとAurora MySQLに直接クエリを実行できるようになりました(Preview) #reinvent
昨年のre:Invent2019で発表されたAmazon RedshiftのFederated Queryが、RDS MySQL と Aurora MySQLをサポートしました。(Preview)
これで、Amazon RedshiftとAthenaからRDSやAuroraのPostgreSQLとMySQLに直接クエリが実行できるようになりました。
Amazon Redshift Federated Queryとは
RDS MySQL と Aurora MySQLのテーブルにRedshiftから直接アクセスできるようになりました。いわゆる、RedshiftからMySQLに対してデータベースリンクする機能です。
RDS PostgreSQL と Aurora PostgreSQLは既に利用可能です。Federated Queryの仕組みについては、以下のブログをご覧ください。
Federated Query のユースケース
Federated Queryを使用して、MySQLのテーブルデータをBIツールやアプリケーションの一部としてライブデータをRedshiftから読み込むことができます。
- 運用データベース(MySQL)に直接クエリを実行
- MySQLのテーブルデータの変更をすぐに適用
- 複雑な抽出、変換、読み込み(ETL)パイプラインを必要とせずに、データをターゲットテーブル(MySQL上のテーブル)に読み込む
Federated Query のしくみ
ネットワーク上でのデータ移動を減らし、Federated Queryの計算の一部をMySQLに直接分散します。Redshiftは最初にリーダーノードからMySQLのインスタンスへのクライアント接続を確立して、テーブルメタデータを取得します。コンピュートノードから、Amazon Redshiftは述語をプッシュダウンしてサブクエリを発行し、結果の行を取得します。その後、Amazon Redshiftは、さらに処理するために結果行を計算ノードに分散します。
MySQLへのFederated Queryの使用(Preview)
RedshiftからMySQLインスタンスは、ネットワーク的に接続できなければなりません。RedshiftがMySQLに接続するための認証情報は(Secret Managerの)Secretを事前に作成します。RedshiftはこのSecretを利用するため、RedshiftのIAMロールに権限を付与します。
MySQLへのFederated Queryは、執筆時点では、Previewであるため、Redshiftのメンテナンストラックをsql_preview
に変更(Modify cluster)してクラスタを再起動すると反映されます。
最後に
これまでは、RDS/Aurora MySQLからデータを取得するためにS3を介してRedshiftやRedshift Spectrumと連携する必要がありましたので、ジョブフローが複雑になりがちでした。しかし、今後は何も考えずにRDS/Auroraの MySQLのデータをRedshiftで組み合わせて分析できるようになります。「DWH」とは、サイロ化されたデータを誰もがいつでも利用できるように一元的に統合・管理することが主目的です。Redshiftは、単に大規模データを低価格・高性能・伸縮自在に扱えるだけではなく、S3上のデータ(データレイク)や他のデータベースをアドホックに統合できる分析プラットフォームに正常進化したと言えるでしょう。
RDS/Aurora PostgreSQLのFederated Query検証ブログを書いた際に、「MySQLもサポートしてほしい」と要望を書いたのですがそれが叶って万々歳です。